GitHub Actions で 大規模ランナー(GitHub-hosted larger runners)が GA となりました
こんにちは、CX事業本部 Delivery部の若槻です。
GitHub Actions のアップデートにより、大規模ランナー(GitHub-hosted larger runners)が一般提供開始(GA)となりました。
これにより、Linux および Windows のランナーインスタンスで、最大 64 vCPUs のインスタンスを利用できるようになりました。
大規模ランナーで利用できるサイズおよび機能
大規模ランナーで利用可能となったインスタンスおよび利用料金は次の通りです。今までの標準ランナーでは vCPUs 2 のみでしたが、大規模ランナーでは vCPUs が 4 から 64 までのインスタンスが利用可能となります。
OS | vCPUs | Per-minute rate (USD) | larger runnner |
---|---|---|---|
Linux | 2 | $0.008 | - (standard) |
Linux | 4 | $0.016 | ○ |
Linux | 8 | $0.032 | ○ |
Linux | 16 | $0.064 | ○ |
Linux | 32 | $0.128 | ○ |
Linux | 64 | $0.256 | ○ |
Windows | 2 | $0.016 | - (standard) |
Windows | 8 | $0.064 | ○ |
Windows | 16 | $0.128 | ○ |
Windows | 32 | $0.256 | ○ |
Windows | 64 | $0.512 | ○ |
加えて、大規模ランナーでは次の機能も利用可能となります。
- ランナーインスタンスへの静的 IP アドレス範囲の割当(GitHub Enterprise のみ)
- 大規模ランナーのアクセス権限と同時実行数の制御
試してみた
GitHub Team アカウントで試してみます。
大規模ランナーの作成
まずは GitHub アカウントに対して大規模ランナーを作成します。大規模ランナーは、既定の GitHub-hosted runner とは別に、カスタムの GitHub-hosted runner を作成することで利用できます。(Organization の場合は Admin 権限が必要となります。)
アカウントの Settings から、左メニューの Actions -> Runners を選択し、New runnner で New GitHub-hosted runner を選択します。
カスタムの GitHub-hosted runner では次の構成を行うことができます。
- Runner image
- Ubunts
- 22.04
- 20.04
- 18.04
- Windows Server
- 2022
- 2019
- Runner size
- 4-cores(16 GB RAM · 150 GB SSD)(Ubuntu のみ)
- 8-cores(32 GB RAM · 300 GB SSD)
- 16-cores(64 GB RAM · 600 GB SSD)
- 32-cores(128 GB RAM · 1200 GB SSD)
- 64-cores(256 GB RAM · 2400 GB SSD)
- Maximum Job Concurrency
- Runner groups
- Networking(GitHub Enterprise のみ)
Networking(静的 IP 範囲の利用)の設定メニューは、アカウントの権限が無いのでグレーアウトして設定不可となっています。
ここでは次の構成で作成します。
- Name:
test-larger-runner
- Runner image:Ubuntu 22.04
- Runner size:8-cores(32 GB RAM · 300 GB SSD)
- Maximum Job Concurrency:50
- Runner groups:Default
- Networking:無効
作成できました。
大規模ランナーの使用
先程作成した大規模ランナーを使用したワークフローを作成します。jobs.<job_id>.runs-on.labels
に先程作成したランナーの名前を指定します。
name: Larger runnner test on: workflow_dispatch jobs: my-job: runs-on: # 大規模ランナー名を指定 labels: test-larger-runner steps: - name: Measure memory size run: free -m
上記ワークフローを実行します。
free コマンドの取得結果で 8-cores(32 GB RAM)のメモリが使用されており、大規模ランナーが使用されていることが確認できました。
ランナーグループの使用
ランナーグループを使用すると、Organization 単位でランナーへのアクセスを制御することができます。これにより意図しないリポジトリやワークフローで大規模ランナーが使われることによりコストの増加を防ぐことができます。
アカウントの Settings から、左メニューの Actions -> Runner groups を選択し、New runner group を選択します。
グループの作成で、利用可能なリポジトリとワークフローを指定できます。ここではリポジトリのみ指定します。
ランナーグループを作成できました。
ランナーグループをランナーに紐づけます。
ワークフローでランナーグループを指定します。jobs.<job_id>.runs-on.group
に先程作成したランナーグループの名前を指定します。
name: Larger runnner test on: workflow_dispatch jobs: my-job: runs-on: # ランナーグループを指定 group: test-group steps: - name: Measure memory size run: free -m
ワークフローを実行すると、実行させられました。
次に、グループの対象のワークフローを制限してみます。
ワークフローは <owner>/<repository>/.github/workflows/<filename>@<ref>
という形式で指定します。(形式が不正だと設定保存時にエラーとなります)
対象でないワークフローで再度実行するとジョブが開始されなくなりました。ただし実行失敗とはならないようで、しばらくはワークフローの開始が試行されるようです。
おわりに
GitHub Actions のアップデートにより、GitHub-hosted larger runners(大規模ランナー)が一般提供開始(GA)となりました。
今までだと、大規模ランナー相当のサイズや機能のインスタンスを使いたい場合は self-hosted runner を利用する必要があったのですが、今回のアップデートにより、サイズや静的 IP の制限を自前でランナー環境を準備せずとも解決できるようになったのは嬉しいですね。
参考
- About larger runners - GitHub Docs
- Choosing runners in a group - Workflow syntax for GitHub Actions - GitHub Docs
以上